//package com.uniview.plugins.sms;
//
//import java.text.ParseException;
//import java.util.Date;
//
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.beans.factory.InitializingBean;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Component;
//
//import com.alicom.mns.tools.DefaultAlicomMessagePuller;
//import com.alicom.mns.tools.MessageListener;
//import com.aliyun.mns.model.Message;
//import com.uniview.entity.po.ServiceOrderSms;
//import com.uniview.entity.po.ServiceOrders;
//import com.uniview.entity.po.ServiceOrdersLogs;
//import com.uniview.service.ServiceOrderSmsService;
//import com.uniview.service.ServiceOrdersService;
//
//import common.Logger;
//import net.sf.json.JSONObject;
//
//@Component
//public class ServiceDispatchReceive implements InitializingBean {
//
//	Logger logger = Logger.getLogger(ServiceDispatchReceive.class);
//
//	private static ServiceOrderSmsService serviceOrderSmsService;
//
//	private static ServiceOrdersService serviceOrdersService;
//
//	@Value("#{configProperties['uniview.accessKeyId']}")
//	private static String accessKeyId;
//
//	@Value("#{configProperties['uniview.accessKeySecret']}")
//	private static String accessKeySecret;
//
//	public static class MyMessageListener implements MessageListener {
//
//		public MyMessageListener() {
//		}
//
//		@Override
//		public boolean dealMessage(Message message) {
//			try {
//				JSONObject contentMap = JSONObject.fromObject(message.getMessageBodyAsString());
//
//				// TODO 根据文档中具体的消息格式进行消息体的解析
//				String content = (String) contentMap.get("content");
//				String phone = (String) contentMap.get("phone_number");
//				if (StringUtils.isNotBlank(content) && (content.equals("0") || content.equals("1"))) {
//					ServiceOrderSms sms = serviceOrderSmsService.findServiceOrderSms(phone);
//					if (sms != null) {
//						ServiceOrders order = serviceOrdersService.featchOrders(sms.getOrderId());
//						if (order != null && (!"-99".equals(order.getStatus()))) {
//							int status = Integer.valueOf(content);
//							String str = "【满意】";
//							if (status == 0) {
//								str = "【不满意】";
//							}
//							order.setStatus("5");
//							order.setSatisfaction(status);
//							order.setModifyTime(new Date());
//
//							ServiceOrdersLogs logs = new ServiceOrdersLogs();
//							logs.setCreateTime(new Date());
//							logs.setCreator("客户");
//							logs.setHandler("客户评价工单处理情况为" + str);
//							logs.setStauts(8);
//							serviceOrdersService.updateOrder(order, logs);
//							serviceOrderSmsService.deleteReceipt(phone);
//						} else if (order != null && ("-99".equals(order.getStatus()))) {
//							serviceOrderSmsService.deleteReceipt(phone);
//						}
//					}
//				}
//				// TODO 这里开始编写您的业务代码
//
//			} catch (Throwable e) {
//				// 您自己的代码部分导致的异常，应该return false,这样消息不会被delete掉，而会根据策略进行重推
//				return false;
//			}
//
//			// 消息处理成功，返回true, SDK将调用MNS的delete方法将消息从队列中删除掉
//			return true;
//		}
//
//	}
//
//	@Override
//	public void afterPropertiesSet() throws Exception {
//
//		logger.info("服务派工系统启动短息回执任务");
//		DefaultAlicomMessagePuller puller = new DefaultAlicomMessagePuller();
//		// 设置异步线程池大小及任务队列的大小，还有无数据线程休眠时间
//		puller.setConsumeMinThreadSize(6);
//		puller.setConsumeMaxThreadSize(16);
//		puller.setThreadQueueSize(200);
//		puller.setPullMsgThreadSize(1);
//		// 和服务端联调问题时开启,平时无需开启，消耗性能
//		puller.openDebugLog(false);
//
//		// TODO 此处需要替换成开发者自己的AK信息
//		 String accessKeyId="LTAIVYKhIKPHLS1h";
//		 String accessKeySecret="q5sSVWydWtLfyRSYVsFi7vFxB2kPmi";
//
//		String messageType = "SmsUp";// 此处应该替换成相应产品的消息类型
//		String queueName = "Alicom-Queue-1951311857767328-SmsUp";// 在云通信页面开通相应业务消息后，就能在页面上获得对应的queueName,格式类似Alicom-Queue-xxxxxx-SmsReport
//		puller.startReceiveMsg(accessKeyId, accessKeySecret, messageType, queueName, new MyMessageListener());
//		logger.info("服务派工系统短息回执任务启动成功");
//	}
//
//	public static void main(String[] args) throws Exception, ParseException {
//
//		DefaultAlicomMessagePuller puller = new DefaultAlicomMessagePuller();
//
//		// 设置异步线程池大小及任务队列的大小，还有无数据线程休眠时间
//		puller.setConsumeMinThreadSize(6);
//		puller.setConsumeMaxThreadSize(16);
//		puller.setThreadQueueSize(200);
//		puller.setPullMsgThreadSize(1);
//		// 和服务端联调问题时开启,平时无需开启，消耗性能
//		puller.openDebugLog(false);
//
//		// TODO 此处需要替换成开发者自己的AK信息
//		String accessKeyId = "LTAIVYKhIKPHLS1h";
//		String accessKeySecret = "q5sSVWydWtLfyRSYVsFi7vFxB2kPmi";
//
//		/*
//		 * TODO 将messageType和queueName替换成您需要的消息类型名称和对应的队列名称 云通信产品下所有的回执消息类型:
//		 * 1:短信回执：SmsReport， 2:短息上行：SmsUp 3:语音呼叫：VoiceReport 4:流量直冲：FlowReport
//		 */
//		String messageType = "SmsUp";// 此处应该替换成相应产品的消息类型
//		String queueName = "Alicom-Queue-1951311857767328-SmsUp";// 在云通信页面开通相应业务消息后，就能在页面上获得对应的queueName,格式类似Alicom-Queue-xxxxxx-SmsReport
//		puller.startReceiveMsg(accessKeyId, accessKeySecret, messageType, queueName, new MyMessageListener());
//	}
//
//	public ServiceOrderSmsService getServiceOrderSmsService() {
//		return serviceOrderSmsService;
//	}
//	
//	@Autowired
//	public void setServiceOrderSmsService(ServiceOrderSmsService serviceOrderSmsService) {
//		ServiceDispatchReceive.serviceOrderSmsService = serviceOrderSmsService;
//	}
//
//	public ServiceOrdersService getServiceOrdersService() {
//		return serviceOrdersService;
//	}
//	
//	@Autowired
//	public void setServiceOrdersService(ServiceOrdersService serviceOrdersService) {
//		ServiceDispatchReceive.serviceOrdersService = serviceOrdersService;
//	}
//
//	public static String getAccessKeyId() {
//		return accessKeyId;
//	}
//
//	public static void setAccessKeyId(String accessKeyId) {
//		ServiceDispatchReceive.accessKeyId = accessKeyId;
//	}
//
//	public static String getAccessKeySecret() {
//		return accessKeySecret;
//	}
//
//	public static void setAccessKeySecret(String accessKeySecret) {
//		ServiceDispatchReceive.accessKeySecret = accessKeySecret;
//	}
//	
//
//}
